package FlyWeight;

import java.util.HashMap;

public class ShapeFactory {
    /*
    ShapeFactory 检查 它的 HashMap 中的 circle 对象, 如果找到 Circle 对象, 则返回该对象;
    否则将创建一个存储在 hashmap 中以备后续使用的新对象

    因此HashMap要 设置成 static final
     */

    private static final HashMap<String, Shape> circleMap = new HashMap<>();  // static final 变量必须要初始化

    public static Shape getCircle(String color){

        Circle circle = (Circle) circleMap.get(color);

        if (circle == null){
            circle = new Circle(color);
            circleMap.put(color,circle);
            System.out.println("Creating circle of color: " + color);
        }
        return circle;
    }
}
